const http = require('http')
const server = http.createServer()
const fs = require('fs')
const path = require('path')
const qs = require('querystring')

server.on('request', (req, res) => {
  //1当用户请求/api/province 时返回省份数据
  if (req.url === '/api/province') {
    fs.readFile(path.join(__dirname, 'data/city.json'), (err, data) => {
      if (err) return console.log(err)
      const arr = JSON.parse(data.toString())
      //用map方法取出数据对象中的provinceName 省份数据
      const plist = arr.map(item => item.provinceName)
      res.setHeader('content-type', 'application/json')
      //转换为json字符串
      res.end(JSON.stringify(plist))
    })
  }
  //2.当用户请求 /api/city?pname=河南省时返回城市数据
  else if (req.url.startsWith('/api/city')) {
    //获取到参数
    const paramStr = req.url.split('?')[1]
    const paramObj = qs.parse(paramStr)
    const pname = paramObj.pname
    fs.readFile(path.join(__dirname, 'data/city.json'), (err, data) => {
      if (err) return console.log(err)
      const arr = JSON.parse(data.toString())
      //根据用户传入的省份名称找到对应的省份对象
      const pObj = arr.find(item => item.provinceName === pname)
      //再map出所有的城市名称
      const clist = pObj.cities.map(item => item.cityName)
      res.setHeader('content-type', 'application/json;charset=utf-8')
      //转换为json字符串
      res.end(JSON.stringify(clist))
    })
  }
  //3.当用户请求 /api/area?pname=河南省&cname=驻马店市 时返回地区数据
  else if (req.url.startsWith('/api/area')) {
    //获取到参数
    const paramStr = req.url.split('?')[1]
    const paramObj = qs.parse(paramStr)
    const pname = paramObj.pname
    const cname = paramObj.cname
    console.log(pname,cname)
    fs.readFile(path.join(__dirname, 'data/city.json'), (err, data) => {
      if (err) return console.log(err)
      const arr = JSON.parse(data.toString())
      //根据用户传入的省份名称找到对应的省份对象
      const pObj = arr.find(item => item.provinceName === pname)
      //根据用户传入的省份名称找到对应的城市对象
      const cObj = pObj.cities.find(item => item.cityName === cname)
      //再map出所有的地区名称
      const alist = cObj.counties.map(item => item.countyName)
      res.setHeader('content-type', 'application/json;charset=utf-8')
      //转换为json字符串
      res.end(JSON.stringify(alist))
    })

  } else {
    res.setHeader('Content-Type', 'text/html;charset=utf-8')
    res.end('您要访问的资源不存在')
  }
})


server.listen(3000, () => {
  console.log('服务器已启动')
})